﻿namespace DimensionsHelper.Common.Metadata.Script;

/// <summary>
///     元数据表达式的最小Token类型。
/// </summary>
public enum TokenKinds
{
    /// <summary>
    ///     结束标记
    /// </summary>
    Eof,

    /// <summary>
    ///     Token是标识符。
    /// </summary>
    Identifier,

    /// <summary>
    ///     Token是表达式。
    /// </summary>
    Expression,

    /// <summary>
    ///     Token是整数。
    /// </summary>
    Integer,

    /// <summary>
    ///     Token是小数。
    /// </summary>
    Double,

    /// <summary>
    ///     Token是字符串。
    /// </summary>
    String,

    /// <summary>
    ///     Token是布尔值true
    /// </summary>
    True,

    /// <summary>
    ///     Token是布尔值false
    /// </summary>
    False,

    /// <summary>
    ///     Token是左括号())。
    /// </summary>
    LeftParen,

    /// <summary>
    ///     Token是右括号(()。
    /// </summary>
    RightParen,

    /// <summary>
    ///     Token是左花括号({)。
    /// </summary>
    LeftCurly,

    /// <summary>
    ///     Token是右花括号(})。
    /// </summary>
    RightCurly,

    /// <summary>
    ///     Token是左方括号([)。
    /// </summary>
    LeftBracket,

    /// <summary>
    ///     Token是右方括号(])。
    /// </summary>
    RightBracket,

    /// <summary>
    ///     Token是尖号(^)。
    /// </summary>
    Caret,

    /// <summary>
    ///     Token是小数点(.)。
    /// </summary>
    Dot,

    /// <summary>
    ///     Token是逗号(,)。
    /// </summary>
    Comma,

    /// <summary>
    ///     Token是加号(+)。
    /// </summary>
    Add,

    /// <summary>
    ///     Token是减号(-)。
    /// </summary>
    Subtract,

    /// <summary>
    ///     Token是星号(*)。
    /// </summary>
    Star,

    /// <summary>
    ///     Token是除号(/)。
    /// </summary>
    Slash,

    /// <summary>
    ///     Token是取余符号(Mod)。
    /// </summary>
    Mod,

    /// <summary>
    ///     Token是大于号(>)。
    /// </summary>
    Greater,

    /// <summary>
    ///     Token是大于等于号(>=)。
    /// </summary>
    GreaterEqual,

    /// <summary>
    ///     Token是小于号(&lt;)。
    /// </summary>
    Less,

    /// <summary>
    ///     Token是小于等于号(&lt;=)。
    /// </summary>
    LessEqual,

    /// <summary>
    ///     Token是等号(=)。
    /// </summary>
    Equal,

    /// <summary>
    ///     Token是不等号(&lt;&gt;)。
    /// </summary>
    NotEqual,

    /// <summary>
    ///     Token是有交集操作符(=*)。
    /// </summary>
    EqualStar,

    /// <summary>
    ///     Token是Not。
    /// </summary>
    Not,

    /// <summary>
    ///     Token是且逻辑(And)。
    /// </summary>
    And,

    /// <summary>
    ///     Token是或逻辑(Or)。
    /// </summary>
    Or,

    /// <summary>
    ///     Token是异或逻辑(Xor)。
    /// </summary>
    Xor,

    /// <summary>
    ///     Token是关键字Null。
    /// </summary>
    Null
}